﻿/*
 * InversibleTransform
 * 
 * initial implementation : 20.11.2008
 *
 * Copyright (c) Adam Sida, asida@centrum.cz.
 * All rights reserved.
 * 
 * for license see Petra.Gis.License.txt
 */
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Petra.Gis.Geometry;


namespace Petra.Gis.ReferenceSystemServices.Transformations
{
  /// <summary>
  /// base class for transformations which can/must be computed in both direction
  /// forward and reverse = inversible
  /// </summary>
  [DataContract(Name = "TRANSFORM")]
  public abstract class InversibleTransform : SRSTransform
  {


    #region constructors

    /// <summary>
    /// xaml constructor
    /// </summary>
    protected InversibleTransform()
      :base()
    {}




    public InversibleTransform(CoordinateSystem sourceCS, CoordinateSystem targetCS, bool isInverse)
      :base(sourceCS, targetCS)
    {
      IsInverse = isInverse;

      UpdateTransform();
    }


    #endregion constructors


    // math transform must be always inversible
    public override bool IsInversible
    {
      get { return true; }
    }


  }

}
